/**
 * ImageComponent.java
 *
 * @author Michael Hansen
 * @author Lukas Thuernagel
 * @author Soeren Warszus
 */

package risk.dice;

import java.awt.*;
import java.io.*;
import javax.swing.JComponent;
import javax.imageio.ImageIO;

/**
 * ImageComponent dient als Hilfsklasse zum Anzeigen von Grafiken.
 */
public class ImageComponent extends JComponent
{
    /**
     * Das jeweilige Bild der Instanz.
     */
    private Image image;
    
    
    /**
     * Der Konstruktur der Klasse erzeugt eine Instanz von Image und legt diese
     * in der eigenen Klassenvariable image ab.
     *
     * @param img Enthaelt einen String, mit einem relativen Pfad zu einer Grafik.
     */
    public ImageComponent(String img)
    {
        File file = new File(System.getProperty("java.class.path") + "/" + img);
        
        try {
            image = ImageIO.read(file); 
            setPreferredSize (new Dimension (image.getWidth(null), 
                                             image.getHeight(null)));
        } catch (IOException e) {
            System.out.println ("Error: " + e.getMessage());
        } catch (NullPointerException e) {
            System.out.println ("Error: " + e.getMessage());
        }
        
        this.image = image;
    }
    
    /**
     * Methode zum "Aktualisieren" (eher: Austauschen) der Grafik.
     *
     * @param img String, mit dem relativen Pfad zur neuen Grafik.
     */
    public void update(String img) 
    {
        File file = new File(System.getProperty("java.class.path") + "/" + img);

        try {
            image = ImageIO.read(file); 
        } catch (IOException e) {
            System.out.println ("Error: " + e.getMessage());
        } catch (NullPointerException e) {
            System.out.println ("Error: " + e.getMessage());
        }

        this.image = image;
    }
    
    /**
     * Methode zum Zeichnen der jeweiligen Grafik.
     * 
     * @param g Grafikkontext
     */
    public void paintComponent(Graphics g)
    {
        g.drawImage(image, 0, 0, null);
    }
}
